home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2005 November / WNnov2005.iso / Windows / Equipement / hMailServer / hMailServer-4.1-Build-136.exe / {app} / PHPWebAdmin / include / smarty / plugins / function.counter.php < prev    next >
PHP Script  |  2004-10-24  |  2KB  |  80 lines

  1. <?php
  2. /**
  3.  * Smarty plugin
  4.  * @package Smarty
  5.  * @subpackage plugins
  6.  */
  7.  
  8.  
  9. /**
  10.  * Smarty {counter} function plugin
  11.  *
  12.  * Type:     function<br>
  13.  * Name:     counter<br>
  14.  * Purpose:  print out a counter value
  15.  * @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
  16.  *       (Smarty online manual)
  17.  * @param array parameters
  18.  * @param Smarty
  19.  * @return string|null
  20.  */
  21. function smarty_function_counter($params, &$smarty)
  22. {
  23.     static $counters = array();
  24.  
  25.     $name = (isset($params['name'])) ? $params['name'] : 'default';
  26.     if (!isset($counters[$name])) {
  27.         $counters[$name] = array(
  28.             'start'=>1,
  29.             'skip'=>1,
  30.             'direction'=>'up',
  31.             'count'=>1
  32.             );
  33.     }
  34.     $counter =& $counters[$name];
  35.  
  36.     if (isset($params['start'])) {
  37.         $counter['start'] = $counter['count'] = (int)$params['start'];
  38.     }
  39.  
  40.     if (!empty($params['assign'])) {
  41.         $counter['assign'] = $params['assign'];
  42.     }
  43.  
  44.     if (isset($counter['assign'])) {
  45.         $smarty->assign($counter['assign'], $counter['count']);
  46.     }
  47.     
  48.     if (isset($params['print'])) {
  49.         $print = (bool)$params['print'];
  50.     } else {
  51.         $print = empty($counter['assign']);
  52.     }
  53.  
  54.     if ($print) {
  55.         $retval = $counter['count'];
  56.     } else {
  57.         $retval = null;
  58.     }
  59.  
  60.     if (isset($params['skip'])) {
  61.         $counter['skip'] = $params['skip'];
  62.     }
  63.     
  64.     if (isset($params['direction'])) {
  65.         $counter['direction'] = $params['direction'];
  66.     }
  67.  
  68.     if ($counter['direction'] == "down")
  69.         $counter['count'] -= $counter['skip'];
  70.     else
  71.         $counter['count'] += $counter['skip'];
  72.     
  73.     return $retval;
  74.     
  75. }
  76.  
  77. /* vim: set expandtab: */
  78.  
  79. ?>
  80.